﻿
export default class 数 {
    private 类型: string
    private 数: number
    constructor(数: string)
    constructor(数: number)
    constructor(数: any) {
        if (typeof 数 == 'string') {
            if (数.indexOf('%') > 0) {
                this.数 = parseInt(数.match(/[0-9]+/).toString())
                this.类型 = '%'
            } else if (数.indexOf('px') > 0) {
                this.数 = parseInt(数.match(/[0-9]+/).toString())
                this.类型 = 'px'
            } else {
                throw new Error('数的初始参数字符串不是百分数字符串数字,或不是"px"单位的字符串数字')
            }
        } else if (typeof 数 == 'number') {
            this.数 = 数
            this.类型=''
        } else {
            throw new Error('数的初始参数字符串不是百分数字符串数字,或不是"px"单位的字符串数字')
        }
    }
    get 取值(): string {
        if (this.类型 == '') {
            return this.数.toString() + 'px'
        } else {
            return this.数.toString() + this.类型
        }
    }
    get 取数(): number {
        return this.数
    }
    加(数: 数 | number | any) {
        if (typeof 数 == 'number') {
            this.数 += 数
            return this
        } else if (typeof 数 == '数') {
            this.数 += 数.数
            return this
        } else {
            throw new Error('加数错误')
        }
    }
    减(数: 数 | number | any) {
        if (typeof 数 == 'number') {
            this.数 -= 数
            return this
        } else if (typeof 数 == '数') {
            this.数 -= 数.数
            return this
        } else {
            throw new Error('减数错误')
        }
    }
    乘(数: 数 | number | any) {
        if (typeof 数 == 'number') {
            this.数 *= 数
            return this
        } else if (typeof 数 == '数') {
            this.数 *= 数.数
            return this
        } else {
            throw new Error('加数错误')
        }
    }
    除(数: 数 | number | any) {
        if (typeof 数 == 'number') {
            this.数 /= 数
            return this
        } else if (typeof 数 == '数') {
            this.数 /= 数.数
            return this
        } else {
            throw new Error('加数错误')
        }
    }
}